package com.hrbxlh.util;

import java.io.File;
import java.util.List;
import java.util.Map;

/**
* -------------------------------------------------------
* Copyright (c) 2017, 鑫联华信息科技股份有限公司
* All rights reserved.
* FileName：delWorkFileUtil.java
* Description：删除上传的作业文件信息
* History：
* Date           Author               Desc
* 2017.9.20		  xzx                 建立
* -------------------------------------------------------
*/

public class DelWorkFileUtil {

	/**
	 * @description
	 * @param 文件List 
	 * @param 文件存储的字段，用于获取文件名
	 * @param 文件保存位置路径  最后一级要加/
	 * @return boolean true成功，false失败
	 * @throws Exception
	 */
	public boolean delWorkFile(List<Map<String, Object>> paramList, String key, String convertFile, String filePath) throws Exception{
		
		boolean result = false;
		FileUpload fileUpload = new FileUpload();
		try{
			for(Map<String, Object> map : paramList){
				fileUpload.deleteFileOnly(filePath, (String)map.get(key));
				fileUpload.deleteFileOnly(filePath, (String)map.get(convertFile));
			}
			result = true;
		}catch(Exception e){
			throw e;
		}
		return result;
	}
	
	
	/**
	 * @description
	 * @param paramList 文件List
	 * @param  keys 文件存储的字段list，用于获取文件名
	 * @param filePath 文件保存位置路径  最后一级要加/
	 * @return boolean true成功，false失败
	 * @throws Exception
	 */
	public boolean delFileList(List<Map<String, Object>> paramList, String[] keys, String filePath) throws Exception{
		
		boolean result = false;
		FileUpload fileUpload = new FileUpload();
		try{
			for(Map<String, Object> map : paramList){
				for(String key : keys){
					String fileName = (String)map.get(key);
					fileUpload.deleteFileOnly(filePath, fileName);
					//删除用于展示生成的html带的图片
					if(fileName != null && !fileName.equals("")){
						delFileByRules(filePath, fileName.split("\\.")[0], "png", 1);
					}
				}
			}
			result = true;
		}catch(Exception e){
			throw e;
		}
		return result;
	}

	/**
	 * @description 删除指定文件夹下的指定文件信息
	 * @param folderPath 文件夹路径 最后一级加不加/都可以
	 * @param equalsPre 指定文件前缀
	 * @param equalsEnd 指定文件后缀
	 * @param type 删除规则（可继续扩展）  1删除指定文件，用.分割0位为 equalsPre的，最后一位为  equalsEnd的文件
	 * */
	public boolean delFileByRules(String folderPath, String equalsPre, String equalsEnd, int type){
		File folder = new File(folderPath);
		File[] files = folder.listFiles();
		if(files != null && files.length != 0){
			for(File file : files){
				//1删除指定文件，用.分割0位为 equalsPre的，最后一位为  equalsEnd的文件
				if(type == 1){
					if(file.getName().split("\\.")[0].equals(equalsPre) && file.getName().split("\\.")[file.getName().split("\\.").length-1].equals(equalsEnd)){
						file.delete();
					}
				}
			}
		}
		return true;
	}

}